// 可序列化的参数类，存储了角色的各种状态参数和配置
using System;
using System.Collections.Generic;
using Pathfinding;
using UnityEngine;

namespace Enemy
{
    [Serializable]
    public class Parameter
    {
        [Header("属性")]
        // public int health;              // TODO:测试 健康值
        // [HideInInspector] public Character character;
        [HideInInspector] public Animator animator;       // 角色动画控制器
        [HideInInspector] public AnimatorStateInfo animatorStateInfo;    // 动画状态信息
        [HideInInspector] public Rigidbody2D rb; 

        [Header("移动")]
        public float moveSpeed;         // 移动速度
        public float chaseSpeed;        // 追击速度
        [HideInInspector] public float currentSpeed; // 当前速度

        [Header("巡逻")]
        public float idleTime;          // 空闲时间
        public Transform[] patrolPoints;   // 巡逻点数组

        [Header("追逐")]
        public LayerMask targetLayer;   // 目标层
        public int chaseDistance;//追逐的距离
        [HideInInspector] public Transform target; // 目标对象
       
        [Header("A*寻路")]
        [HideInInspector] public Seeker seeker;// 用于处理路径计算的 Seeker 组件。
        [HideInInspector] public Path path; // Seeker 计算出的路径
        [HideInInspector] public int currentWaypoint = 0; // 当前路径点的索引。
        [HideInInspector] public bool reachedEndOfPath; // 标志位，指示 AI 是否到达路径的末尾。
        [HideInInspector] public float nextWaypointDistance = 3f; // 到达路径点之前的距离。减速距离
        [HideInInspector] public float repathRate = 0.5f; // 重新计算路径的频率（秒）。
        [HideInInspector] public float lastRepath = float.NegativeInfinity; // 上次计算路径的时间。
        [HideInInspector] public bool isPathRefresh;//是否刷新

        [Header("攻击")]
        public Transform attackPoint;   // 攻击点的位置
        public float attackArea;        // 攻击范围

        [Header("受击")]
        [HideInInspector] public bool isHurt; // 是否受伤
        [HideInInspector] public bool isDead; // 是否死亡
        // [HideInInspector] public bool getHit;  // 是否被击中
    }
}
